home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / diskdup / diskdup.h < prev    next >
Text File  |  1994-06-01  |  5KB  |  146 lines

  1. /********************************************************************
  2.  *                                                                    *
  3.  *                            DISKDUP                            *
  4.  *                                                                    *
  5.  *                        オンメモリ型 DISKCOPY                        *
  6.  *                                                                    *
  7.  *                            diskdup.exp                                *
  8.  *                                                                    *
  9.  *                            for FM-TOWNS                            *
  10.  *                                                                    *
  11.  *            Copyright (c) ちにゃと & Tymic 1992. 1993.        *
  12.  *                                                                    *
  13.  *                            メイン ヘッダー                            *
  14.  *                                                                    *
  15.  ********************************************************************/
  16.  
  17. typedef unsigned char        uchar;        /* 無符号  8 bit */
  18. typedef unsigned short        ushort;        /* 無符号 16 bit */
  19. typedef unsigned int        uint;        /* 無符号 32 bit */
  20. typedef unsigned long        ulong;        /* 無符号 32 bit */
  21.  
  22.  
  23. /********************************************************************
  24.     定数定義
  25. *********************************************************************/
  26.  
  27. #define    VER                "0.90a"            /* バージョン 番号 */
  28.  
  29. #define    OK                0                /* 正常 */
  30. #define    NG                -1                /* 異常 */
  31. #define    TRUE            1                /* 真 */
  32. #define    FALSE            0                /* 偽 */
  33.  
  34. #define MAXHEAD            2                /* ヘッド 番号最大値 */
  35.  
  36. #define MAXCYL_2HD        77                /* 2HD シリンダ 番号最大値 */
  37. #define MAXCYL_2HC        80                /* 2HC シリンダ 番号最大値 */
  38. #define MAXCYL_2DD        80                /* 2DD シリンダ 番号最大値 */
  39.  
  40. #define MAXSEC_12        8                /* 1.2M 2HD セクタ 番号最大値 */
  41. #define MAXSEC_720        9                /* 720K 2DD セクタ 番号最大値 */
  42. #define MAXSEC_640        8                /* 640K 2DD セクタ 番号最大値 */
  43. #define MAXSEC_12C        15                /* 1.2M 2HC セクタ 番号最大値 */
  44. #define MAXSEC_1440        18                /* 1.44 2HC セクタ 番号最大値 */
  45.  
  46. #define SECLEN512        512                /* セクタ レングス 512 */
  47. #define SECLEN1024        1024            /* セクタ レングス 1024 */
  48.  
  49. #define MODE1_12        0x0003            /* 1.2M 2HD ドライブ モード 1 */
  50. #define MODE2_12        0x0208            /* 1.2M 2HD ドライブ モード 2 */
  51. #define MODE1_720        0x0012            /* 720K 2DD ドライブ モード 1 */
  52. #define MODE2_720        0x0209            /* 720K 2DD ドライブ モード 2 */
  53. #define MODE1_640        0x0012            /* 640K 2DD ドライブ モード 1 */
  54. #define MODE2_640        0x0208            /* 640K 2DD ドライブ モード 2 */
  55. #define MODE1_12C        0x0002            /* 1.2M 2HC ドライブ モード 1 */
  56. #define MODE2_12C        0x020F            /* 1.2M 2HC ドライブ モード 2 */
  57. #define MODE1_1440        0x0042            /* 1.44M 2HC ドライブ モード 1 */
  58. #define MODE2_1440        0x0212            /* 1.44M 2HC ドライブ モード 2 */
  59.  
  60. #define FD0_DRVNO        0x0020            /* フロッピー デバイス 0 */
  61. #define FD1_DRVNO        0x0021            /* フロッピー デバイス 1 */
  62.  
  63. #define DISKSIZE        SECLEN1024 * \
  64.                         MAXSEC_12 * \
  65.                         MAXCYL_2HD * \
  66.                         MAXHEAD            /* ディスク 読み込み バッファ レングス */
  67.  
  68. enum _DISKTYPE {                        /* フロッピー ディスク 種別番号 */
  69.     TYPE_NOT            = 0,            /* 未対応 ディスク */
  70.     TYPE_2HD_12,                        /* 1.2M 2HD */
  71.     TYPE_2DD_720,                        /* 720K 2DD */
  72.     TYPE_2DD_640,                        /* 640K 2DD */
  73.     TYPE_2HC_12,                        /* 1.2M 2HC */
  74.     TYPE_END,                            /* ダミー */
  75. };
  76.  
  77. enum _ERRCODE {                            /* エラー メッセージ 番号 */
  78.     NOERR                = 0,            /* エラー 無し 正常終了 */
  79.     ERRMODESET,                            /* モード セット エラー */
  80.     ERRDISKREAD,                        /* ディスク リード エラー */
  81.     ERRDISKWRITE,                        /* ディスク ライト エラー */
  82.     ERRDISKSET,                            /* ディスク 設定 エラー */
  83.     ERRDISKTYPE,                        /* 未対応 ディスク エラー */
  84.     ERRNOTDISK,                            /* ドライブ ノット レディー */
  85.     ERRPROTECT,                            /* 書き込み禁止 */
  86.     ERRFORMAT,                            /* フォ-マット エラ- */
  87. };
  88.  
  89. #define PreAmblLength        146            /* プレ アンブル データ レングス */
  90. #define PosAmblLength        600            /* ポスト アンブル データ レングス */
  91. #define SecData1024Length    1200        /* 1024 セクタ データ レングス */
  92. #define SecData512Length    688            /* 512 セクタ データ レングス */
  93.  
  94. #define RETRYMAX            7            /* エラー リトライ 回数 */
  95.  
  96.  
  97. /********************************************************************
  98.     構造体定義
  99. *********************************************************************/
  100.  
  101. typedef struct _FORMPARA {        /* フォーマット データ 圧縮形式 */
  102.     int        fdata;                /* フォーマット データ */
  103.     int        cnt;                /* 展開 レングス */
  104. } FORMPARA;
  105.  
  106. typedef struct _IntParaBlk {    /* リアル モード 割り込み発行 パラメータ ブロック */
  107.     ushort    intno;                /* 割り込み番号 */
  108.     ushort    rds;                /* リアル モード ds */
  109.     ushort    res;                /* リアル モード es */
  110.     ushort    rfs;                /* リアル モード fs */
  111.     ushort    rgs;                /* リアル モード gs */
  112.     uint    reax;                /* リアル モード eax */
  113.     uint    redx;                /* リアル モード edx */
  114. } IntParaBlk;
  115.  
  116.  
  117. /********************************************************************
  118.     外部参照
  119. *********************************************************************/
  120.  
  121. #ifndef    __PRGMAIN__
  122. extern char Title1[];                /* タイトル 1 */
  123. extern char Title2[];                /* タイトル 2 */
  124. extern char *ErrMsgTbl[];            /* エラー メッセージ テーブル */
  125. extern int option;                    /* オプション データ */
  126. #endif
  127.  
  128.  
  129. /********************************************************************
  130.     プロトタイプ
  131. *********************************************************************/
  132.  
  133. void main( int, char ** );                    /* メイン 処理 */
  134. void PrgExit1( void );                        /* プログラム 終了処理 */
  135. void PrgExit2( void );                        /* プログラム 終了処理 */
  136. void CopyPrgMain( void );                    /* コピー プログラム メイン */
  137. int SetDiskDrvMode( int, int );                /* ドライブ モード 設定 */
  138. int ReadDiskAll( int, char *, int );        /* ディスク 読み込み */
  139. int WriteDiskAll( int, char *, int );        /* ディスク 書き込み */
  140. int TrackFormat( int, int, int );            /* 1 トラック フォーマット */
  141. void MakeFormData( int, int, int );            /* フォーマット データ 作成 */
  142. int ChkFormatType( int );                    /* フォーマット タイプ チェック */
  143.  
  144.  
  145. /* end of file */
  146.